{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from sklearn import *\n",
    "\n",
    "plt.style.use(\"seaborn\")\n",
    "\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams[\"figure.figsize\"] = (12,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>bmi</th>\n",
       "      <th>children</th>\n",
       "      <th>smoker</th>\n",
       "      <th>region</th>\n",
       "      <th>charges</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19</td>\n",
       "      <td>female</td>\n",
       "      <td>27.900</td>\n",
       "      <td>0</td>\n",
       "      <td>yes</td>\n",
       "      <td>southwest</td>\n",
       "      <td>16884.92400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>18</td>\n",
       "      <td>male</td>\n",
       "      <td>33.770</td>\n",
       "      <td>1</td>\n",
       "      <td>no</td>\n",
       "      <td>southeast</td>\n",
       "      <td>1725.55230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>28</td>\n",
       "      <td>male</td>\n",
       "      <td>33.000</td>\n",
       "      <td>3</td>\n",
       "      <td>no</td>\n",
       "      <td>southeast</td>\n",
       "      <td>4449.46200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>33</td>\n",
       "      <td>male</td>\n",
       "      <td>22.705</td>\n",
       "      <td>0</td>\n",
       "      <td>no</td>\n",
       "      <td>northwest</td>\n",
       "      <td>21984.47061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>32</td>\n",
       "      <td>male</td>\n",
       "      <td>28.880</td>\n",
       "      <td>0</td>\n",
       "      <td>no</td>\n",
       "      <td>northwest</td>\n",
       "      <td>3866.85520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age  gender     bmi  children smoker     region      charges\n",
       "0   19  female  27.900         0    yes  southwest  16884.92400\n",
       "1   18    male  33.770         1     no  southeast   1725.55230\n",
       "2   28    male  33.000         3     no  southeast   4449.46200\n",
       "3   33    male  22.705         0     no  northwest  21984.47061\n",
       "4   32    male  28.880         0     no  northwest   3866.85520"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"/data/insurance.csv\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "target = \"charges\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df[target]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.stats import norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gaussian(x):\n",
    "    n = len(x)\n",
    "    x = np.sort(x)\n",
    "    x_mean, x_std = np.mean(x), np.std(x)\n",
    "    rv = norm(loc = x_mean, scale = x_std)\n",
    "    return x, rv.pdf(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x109b89cf8>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(211)\n",
    "y.plot.hist(bins = 50, density = True)\n",
    "plt.title(\"Histogram of charges\")\n",
    "\n",
    "x_vals, y_vals = gaussian(y)\n",
    "plt.plot(x_vals, y_vals)\n",
    "\n",
    "\n",
    "plt.subplot(212)\n",
    "y.plot.box(vert=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = np.log(df[target])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a1d92bf98>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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g8BOM3sEP5T/Yua/noiIiIjI3DjrUBDnXD/wtim2rQjuvnWSQ/w05XYdcI1zbsDMvga85JzzgA9NcOwvAV86W/tERERERDLBdMZYh6kL/+LEXuAk8I05/vmhW7t2XbqbICIiIrLoZGIGm9Ng7Zz7R+Af5/JnzrZHH9UIFREREZG5lokZTAvEiIiIiIiEQMFaRERERCQEcz3GWkTknGixjMzzzuxSPqV/l1lRkKu3Z5H5SP9zRSTjTbRQhhZbmL7Zq9UNXD0LR003nVsicq40FEREREREJAQK1iIiIiIiIVCwFhEREREJgYK1iIiIiEgIFKxFREREREKgYC0iIiIiEgIFaxERERGREChYi4iIiIiEQMFaRERERCQECtYiIiIiIiFQsBYRERERCYGCtYiIiIhICBSsRURERERCoGAtIiIiIhICBWsRERERkRAoWIuIiIiIhEDBWkREREQkBArWIiIiIiIhULAWEREREQmBgrWIiIiISAgUrEVEREREQqBgLSIiIiISAgVrEREREZEQKFiLiIiIiIRAwVpEREREJAQK1iIiIiIiIVCwFhEREREJgYK1iIiIiEgIFKxFREREREKgYC0iIiIiEgIFaxERERGREChYi4iIiIiEQMFaRERERCQECtYiIiIiIiFQsBYRERERCYGCtYiIiIhICBSsRURERERCoGAtIiIiIhICBWsRERERkRAoWIuIiIiIhEDBWkREREQkBArWIiIiIiIhULAWEREREQmBgrWIiIiISAgUrEVEREREQqBgLSIiIiISAgVrEREREZEQKFiLiIiIiIRAwVpEREREJAQK1iIiIiIiIVCwFhEREREJQcTzvHS3QURERERk3lOPtYiIiIhICBSsRURERERCoGAtIiIiIhICBWsRERERkRAoWIuIiIiIhEDBWkREREQkBPF0NyCTmdkdwB3B3VygDqh1zrUH298N/BYwDPy5c+57aWhmRphGrT4LXA10Bfvc7pzrmONmZgQzywK+CqwAEsC7nXNHU7bfBvwp/nl1r3Pui+loZyaYRq0+BLwTaAoe+i3nnJvrdmYKM8sBvgysBDqB9zvnnk3ZrteswDRqpdcswMwuBz7tnLvezFYBXwE84BB+zZIp++YBXwOq8ev2m865plcfdeGaYb0iwMvAyHn3pHPuI3Pc5LRJrVXKY58BnHPu8+P2jQL/DGwGBoB3OeeOz2Fzp0091lNwzn3FOXd98I++G/idlKBYC/wO/gvvTcAngxfqRWmqWgW2AjeN7LMY36BSvBGIO+euAj4B/MXIhiBIfgZ4A/Aa4D3BubZYTVqrwFbgHSnn1aIN1YF3A93OuSuADwL/OLJBr1mvMmmtAov+NcvM/gD4En5nCcDfAh91zl0LRIDbxz3lt4GDwfb7gI/OVVszwTnU6xJgT8o5tphC9ZhamVmVmT0I/NIkT3kzkOucuxK4G7hnThp6DhSsp8HMtgPrnXNfSHn4MuAJ59xA8IJ7HNiUlgZmkIlqFfyluRr4gpk9YWZ3pa2BmeEYEA/qUgwMpWxbBxx3zrU55waBx4Fr09DGTDFVrQC2AR8xs8fNbNG8KU3hUuBB8Lt88M+nEXrNGmvSWuk1a9QJ4C0p97cBPwtuPwjcOG7/a4CHpti+0M20XtuAZWb2EzP7gZnZHLQxU4yvVSHwMeDfJtl/9Nxyzj0FbJ/Nxp0PBevp+SPg4+MeKwZSezC6gJI5a1HmmqhWBcA/AL8O3Ay8z8wW8xt6N/7QhqPAF4HPpmzTeTXWVLUC+DrwXuAG4Bozu3VOW5d59gG3mlnEzK7Af9OOBdt0bo01Va30mgU4577F2D9mI865keWaJzp/Us+xRXd+nUO9TgOfdM69FvhL/GE0i8L4WjnnnnfO/WKKp4x//UqYWUYOZ1awPgszKwXWOud+Mm5TJ1CUcr8IaGcRm6JWvcDfO+d6nXNdwCP446QWq98DHnbOrcGvw1fNbOSjQ51XY01aq2B84t8555qD3v3vA1vS19SMcC/+OfQT4DZgt3MuEWzTuTXWVLXSa9bEkim3Jzp/Us+xxX5+wdnrtQt4AMA59zj+H3eROWrbfDP+9SvqnBtOV2OmomB9dtcBP5rg8aeBa80s18xK8D9GPDSnLcs8k9VqDfC4mcWCMcTXAHvmtGWZpY0zf3m3AlnASE/ZEWC1mZWbWTZ+TZ+c+yZmjKlqVQwcMrPC4M3oBvzx/YvZDuDx4FqH+4HnUrbpNWusqWql16yJ7TWz64PbtwCPjdv+BP51EZNtX2zOVq8/A34XwMw2Ay+m9HDLWKPnVvAJ08H0NmdyGdmNnmGMlBfcYBaC48657wRXjT+G/wfKHzvn+tPUxkwxVa3+HXgK/6Of+5xzh9PUxkzwGeBeM3sMyMYfPnO7mRU6574Q1O1h/PPqXufcqTS2Nd3OVqs/wu9xHAB+7Jz7QRrbmgmeBf63mX0Yv3fsnXrNmtTZaqXXrFf7feCLwR/9R4D/AjCzHwK3Ap/D/1TpcWAQeFu6GpohzlavTwFfM7M34c/Uc0ea2pmxzGzkItj7gdeb2c/xLwS9M60Nm0LE8/THkYiIiIjI+dJQEBERERGREChYi4iIiIiEQMFaRERERCQECtYiIiIiIiFQsBYRERERCYGCtYiIiIhICBSsRURERERCoGAtIiIiIhKC/wftRhHG2ELlwgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(211)\n",
    "y.plot.hist(bins = 50, density = True)\n",
    "plt.title(\"Histogram of charges\")\n",
    "\n",
    "x_vals, y_vals = gaussian(y)\n",
    "plt.plot(x_vals, y_vals)\n",
    "\n",
    "\n",
    "plt.subplot(212)\n",
    "y.plot.box(vert=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.drop(columns=[target])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "categorical columns: ['gender', 'smoker', 'region']\n",
      "continuous columns: ['age', 'bmi', 'children']\n"
     ]
    }
   ],
   "source": [
    "cat_columns = [k for k in dict(X.dtypes) if str(X.dtypes[k]) == \"object\"]\n",
    "num_columns = [k for k in dict(X.dtypes) if str(X.dtypes[k]) != \"object\"]\n",
    "print(\"categorical columns:\", cat_columns)\n",
    "print(\"continuous columns:\", num_columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "age           int64\n",
       "bmi         float64\n",
       "children      int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[num_columns].dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "age         float64\n",
       "bmi         float64\n",
       "children    float64\n",
       "dtype: object"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[num_columns] = X[num_columns].astype(\"float64\")\n",
    "X[num_columns].dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ColumnTransformer(n_jobs=None, remainder='drop', sparse_threshold=0.3,\n",
       "         transformer_weights=None,\n",
       "         transformers=[('cat', Pipeline(memory=None,\n",
       "     steps=[('onehotencoder', OneHotEncoder(categorical_features=None, categories=None,\n",
       "       dtype=<class 'numpy.float64'>, handle_unknown='ignore',\n",
       "       n_values=None, sparse=True))]), ['gender', 'smoker', 'region']), ('num', Pipeline(memory=None,\n",
       "   ..., ('bucketizers', KBinsDiscretizer(encode='onehot', n_bins=5, strategy='quantile'), ['age', 'bmi'])])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_pipe = pipeline.make_pipeline(preprocessing.OneHotEncoder(handle_unknown = \"ignore\"))\n",
    "\n",
    "num_pipe = pipeline.make_pipeline(\n",
    "    preprocessing.StandardScaler()\n",
    ")\n",
    "\n",
    "column_transformers = compose.ColumnTransformer([\n",
    "    (\"cat\", cat_pipe, cat_columns),\n",
    "    (\"num\", num_pipe, num_columns),\n",
    "    (\"bucketizers\", preprocessing.KBinsDiscretizer(n_bins = 5), [\"age\", \"bmi\"])\n",
    "])\n",
    "\n",
    "column_transformers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y\n",
    "                                        , test_size = 0.3, random_state = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7883913140398686"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe = pipeline.Pipeline([\n",
    "    (\"column_transformers\", column_transformers),\n",
    "    (\"lr\", linear_model.LinearRegression())\n",
    "])\n",
    "pipe.fit(X_train, y_train)\n",
    "pipe.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
